#ifndef _3D_MATH_H
#define _3D_MATH_H

#include "vector.h"

enum Position { INTERSECTS, IS_IN_FRONT, IS_BEHIND };

float absoluteValue(const float value);
Vector crossProduct(Vector vector1, Vector vector2);
float dotProduct(Vector vector1, Vector vector2);
double angleBetweenVectors(Vector vector1, Vector vector2);
Vector vectorFromTwoPoints(Vector point1, Vector point2);
float vectorMagnitude(Vector vector);
Vector normalize(Vector normalVector);
Vector triangleNormal(Vector triangle[]);
float planeOriginDistance(Vector normalVector, Vector point);
bool insideTriangle(Vector intersectionPoint, Vector polygonVertices[]);
float distanceBetweenPoints(Vector point1, Vector point2);

#endif /*3D_MATH_H*/